package top.lixunda.ecommerce.server.good.service;

import com.baomidou.mybatisplus.extension.service.IService;
import top.lixunda.ecommerce.server.good.api.entity.db.SimpleReviewPraiseDO;

import java.util.List;
import java.util.Map;

/**
 * <p>
 * 'commerce_goods.order_detail' is not BASE TABLE 服务类
 * </p>
 *
 * @author Xumda
 * @since 2020-01-06
 */
public interface ISimpleReviewPraiseService extends IService<SimpleReviewPraiseDO> {

    /**
     * 根据简单评论的id获取当前评论的点赞数量
     *
     * @param id 评论id
     * @return 点赞次数
     */
    Integer queryPraiseCountById(Integer id);

    /**
     * 根据多个评论id获取多个评论的点赞次数
     *
     * @param ids 评论id的列表
     * @return 键值对，键为评论id，值为评论点赞次数
     */
    Map<Integer, Integer> queryPraiseCountByIds(List<Integer> ids);

    /**
     * 对某个商品的某个简单评论进行一次点赞
     *
     * @param reviewId 评论id
     * @return 点赞后的该评论的点赞次数
     */
    Integer addPraiseById(Integer reviewId);

    /**
     * 取消对某个评论的点赞
     *
     * @param reviewId 评论id
     * @return 取消点赞后的该评论的点赞次数
     */
    Integer cancelPraiseById(Integer reviewId);

    /**
     * 当前登陆用户是否对某个评论进行点赞
     *
     * @param reviewId 评论id
     * @return 是否进行点赞
     */
    Boolean currentPraiseFlagById(Integer reviewId);

    /**
     * 当前登陆用户是否对某些评论进行点赞
     *
     * @param reviewIds 评论id列表
     * @return 是否进行点赞，键值对，键为评论编号，值为是否点赞
     */
    Map<Integer, Boolean> currentPraiseFlagByIds(List<Integer> reviewIds);

}
